home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / simcode.arc / UTIL.PAS < prev    next >
Pascal/Delphi Source File  |  1984-10-14  |  3KB  |  119 lines

  1. {$debug-}
  2. {$symtab-,$pagesize:86,$linesize:132,
  3. $title:'UTIL.PAS -- games utilities'}
  4. {$debug-}
  5.  
  6.  module util;
  7.  
  8.     var
  9.        [static] seed : word;
  10.        starttime : integer;
  11.        elasped : integer;
  12.        is_stopped : boolean;
  13.        value elasped := 0;
  14.        is_stopped := true;
  15.  
  16.     function uaddok(a,b:word;
  17.      var c:word) : boolean;
  18.  
  19.        external;
  20.  
  21.     function umulok(a,b:word;
  22.      var c:word) : boolean;
  23.  
  24.        external;
  25.  
  26.     procedure time(var s: string);
  27.  
  28.        external;
  29.  
  30.     function rand(x : integer) : integer [public];
  31.  
  32.        var
  33.       a,b : word;
  34.       trash : boolean;
  35.       s : word;
  36.       r : integer;
  37.  
  38.        begin
  39.       a := 46269;
  40.       b := 13849;
  41.       s := seed;
  42.       trash := umulok(a,s,seed);
  43.       s := seed;
  44.       trash := uaddok(b,s,seed);
  45.       r    := ord(seed-32768);
  46.       if (r < 0) then r := -r;
  47.       rand := (r    mod x) + 1;
  48.       end;
  49.  
  50.     procedure srand [public];
  51.  
  52.        var
  53.       trashtime : string(10);
  54.  
  55.        begin
  56.       time(trashtime);
  57.       seed := (wrd(trashtime[2])-48)*3600+(wrd(trashtime[4])-48)*600+ (wrd(
  58.            trashtime[5])-48)*60+(wrd(trashtime[7])-48)*10+(wrd(trashtime[8])
  59.            -48);
  60.       elasped := 0;
  61.       end;
  62.  
  63.     procedure startclock [public];
  64.  
  65.        var
  66.       trashtime : string(10);
  67.  
  68.        begin
  69.       time(trashtime);
  70.       starttime := (ord(trashtime[2])-48)*3600+(ord(trashtime[4])-48)*600+ (
  71.            ord(trashtime[5])-48)*60+(ord(trashtime[7])-48)*10+(ord(
  72.            trashtime[8])-48);
  73.       starttime := starttime - elasped;
  74.       elasped := 0;
  75.       is_stopped := false;
  76.       end;
  77.  
  78.     procedure stopclock [public];
  79.  
  80.        var
  81.       trashtime : string(10);
  82.       trashint : integer;
  83.  
  84.        begin
  85.       if (is_stopped = false) then begin
  86.          time(trashtime);
  87.          trashint := (ord(trashtime[2])-48)*3600+(ord(trashtime[4])-48)*600+
  88.           (ord(trashtime[5])-48)*60+(ord(trashtime[7])-48)*10+(ord(
  89.           trashtime[8])-48);
  90.          elasped := trashint - starttime;
  91.          is_stopped := true;
  92.          end;
  93.       end;
  94.  
  95.     function readclock : integer [public];
  96.  
  97.        var
  98.       currtime : integer;
  99.       trashtime : string(10);
  100.  
  101.        begin
  102.       if (is_stopped = false) then begin
  103.          time(trashtime);
  104.          currtime := (ord(trashtime[2])-48)*3600+(ord(trashtime[4])-48)*600+
  105.           (ord(trashtime[5])-48)*60+(ord(trashtime[7])-48)*10+(ord(
  106.           trashtime[8])-48);
  107.          readclock := currtime - starttime;
  108.          end
  109.       else readclock := elasped;
  110.       end;
  111.  
  112.     procedure timepenalty(pen : integer);
  113.  
  114.        begin
  115.       if (is_stopped = false) then starttime := starttime - pen
  116.       else elasped := elasped + pen;
  117.       end;
  118.  end.
  119.